A abstract
S syntax
T tree

tree implies hierarchy

syntax
  characters  "if (a == ((b== 2) == 1)) then"
   ->  keywords  "if", "then"
       numbers  "1"
       strings  
   
   tokens:
   if-keyword  open-list  variable"a"  variable"=="  number"1" close-list then-keyword
   AST:
   if-statement(expression(variable("a"),..))
